package MVC.Controllers;

import MVC.Controller;
import br.ufsc.inf.leobr.cliente.*;
import br.ufsc.inf.leobr.cliente.exception.ArquivoMultiplayerException;
import br.ufsc.inf.leobr.cliente.exception.JahConectadoException;
import br.ufsc.inf.leobr.cliente.exception.NaoConectadoException;
import br.ufsc.inf.leobr.cliente.exception.NaoPossivelConectarException;

public class NetGamesController extends Controller implements OuvidorProxy {

    /* Attributos */
    private Proxy proxy;

    public NetGamesController() {
        proxy = Proxy.getInstance();
        proxy.addOuvinte(this);
    }

    /* Actions */
    public boolean conectar(String nome, String servidor) {
        try {
            proxy.conectar(servidor, nome);
            return true;
        } catch (JahConectadoException e) {
            jogadorController.getApplicationView().alert(e.getMessage());
            return false;
        } catch (NaoPossivelConectarException e) {
            jogadorController.getApplicationView().alert(e.getMessage());
            return false;
        } catch (ArquivoMultiplayerException e) {
            jogadorController.getApplicationView().alert(e.getMessage());
            return false;
        }
    }

    public boolean desconectar() {
        try {
            proxy.desconectar();
            return true;
        } catch (NaoConectadoException e) {
            jogadorController.getTabuleiroView().alert(e.getMessage());
            return false;
        }
    }

    public void iniciarNovaPartida(Integer integer) {

    }

    public void finalizarPartidaComErro(String s) {

    }

    public void receberMensagem(String s) {

    }

    public void receberJogada(Jogada jogada) {

    }

    public void tratarConexaoPerdida() {

    }

    public void tratarPartidaNaoIniciada(String s) {

    }

    /* Getters e Setters */
    public Proxy getProxy() {
        return proxy;
    }

    public void setProxy(Proxy proxy) {
        this.proxy = proxy;
    }
}
